#pragma once
#include "sceneobject.h"
class CCamera :	public CSceneObject
{
public:
	CCamera(void);
	virtual ~CCamera(void);

	void Init(const CVector3D& vPosition, DATA_TYPE fFov, const CVector3D& vLookAt, const CVector3D& vUp);

	DATA_TYPE GetFov() const { return m_fFov; }
	DATA_TYPE GetFocalLength() const { return m_fFocalLength; }

	const CVector3D& GetLookAt() const { return m_vLookAt; }
	const CVector3D& GetUp() const { return m_vUp; }
	const CVector3D& GetDir() const { return m_vDir; }
	const CVector3D& GetRight() const { return m_vRight; }

protected:
	DATA_TYPE m_fFov;
	DATA_TYPE m_fFocalLength;

	CVector3D m_vLookAt;
	CVector3D m_vUp;
	CVector3D m_vDir;
	CVector3D m_vRight;
};

typedef boost::shared_ptr<CCamera> CCameraPtr;
